package com.tul.vapp.servicecenter.dao;

import com.tul.vapp.servicecenter.entity.Namespace;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * INamespaceDao
 * 
 * @author wwxiang
 * @since 2017/12/27.
 */
public interface INamespaceDao {

	/**
	 * 获取指定的命名空间
	 * 
	 * @param appId appId
	 * @param namespace namespace
	 * @return 命名空间
	 */
	Namespace getNamespace(@Param("appId") String appId, @Param("namespace") String namespace);

	/**
	 * 获取此应用下所有的Namespace
	 * 
	 * @param appId appId
	 * @return 此应用下所有的Namespace
	 */
	List<Namespace> getNamespaces(String appId);

	/**
	 * 获取所有的Namespace
	 *
	 * @return 所有的Namespace
	 */
	List<Namespace> getAllNamespaces();

	/**
	 * 添加命名空间
	 * 
	 * @param namespace namespace
	 * @return 添加成功的数量
	 */
	int addNamespace(Namespace namespace);

	/**
	 * 删除指定的命名空间
	 * 
	 * @param appId appId
	 * @param namespace namespace
	 * @return 删除数量
	 */
	int deleteNamespace(@Param("appId") String appId, @Param("namespace") String namespace);

	/**
	 * 批量删除指定的应用下的命名空间
	 * 
	 * @param appId appId
	 * @return 删除数量
	 */
	int deleteNamespace(String appId);

	/**
	 * 更新命名空间
	 * 
	 * @param namespace 命名空间
	 * @return 更新数量
	 */
	int updateNamespace(Namespace namespace);
}
